package com.ruoyi.function.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 商户对象 garage
 * 
 * @author ruoyi
 * @date 2025-03-18
 */
@Data
public class Garage extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 商家id */
    private Long id;

    /** 关联用户ID */
    @Excel(name = "关联用户ID")
    private Long userId;

    /** 店铺名称 */
    @Excel(name = "店铺名称")
    private String garageName;

    /** 头像 */
    @Excel(name = "头像")
    private String avatar;

    /** 店铺介绍 */
    @Excel(name = "店铺介绍")
    private String introduction;

    /** 服务类型ID列表，逗号分隔 */
    @Excel(name = "服务类型")
    private String serviceTypeIds;
    private String[] serviceTypeIdsArray;
    /** 服务区域，多个区域用逗号分隔 */
    @Excel(name = "服务区域，多个区域用逗号分隔")
    private String serviceAreas;

    /** 营业执照图片列表(JSON) */
    @Excel(name = "营业执照图片列表(JSON)")
    private String businessLicense;

    /** 道路运输许可证图片列表(JSON) */
    @Excel(name = "道路运输许可证图片列表(JSON)")
    private String transportLicense;

    /** 门店照片(JSON) */
    @Excel(name = "门店照片(JSON)")
    private String shopPhotos;

    /** 联系电话 */
    @Excel(name = "联系电话")
    private String contactMobile;

    /** 紧急联系人电话 */
    @Excel(name = "紧急联系人电话")
    private String emergencyMobile;

    /** 省份 */
    @Excel(name = "省份")
    private String province;

    /** 城市 */
    @Excel(name = "城市")
    private String city;

    /** 区域 */
    @Excel(name = "区域")
    private String district;

    /** 详细地址 */
    @Excel(name = "详细地址")
    private String address;

    /** 经度 */
    @Excel(name = "经度")
    private BigDecimal longitude;

    /** 纬度 */
    @Excel(name = "纬度")
    private BigDecimal latitude;

    /** 审核状态 */
    @Excel(name = "审核状态")
    private Integer auditStatus;

    /** 审核备注 */
    @Excel(name = "审核备注")
    private String auditRemark;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date auditTime;

    /** 资质证书照片(JSON) */
    @Excel(name = "资质证书照片(JSON)")
    private String qualificationPhotos;

    /** 店铺环境照片(JSON) */
    @Excel(name = "店铺环境照片(JSON)")
    private String environmentPhotos;

    /** 营业执照验证状态(0-未验证,1-验证通过,2-验证失败) */
    @Excel(name = "营业执照验证状态(0-未验证,1-验证通过,2-验证失败)")
    private Integer businessLicenseStatus;

    /** 营业执照验证备注 */
    @Excel(name = "营业执照验证备注")
    private String businessLicenseRemark;

    /** 公司名称 */
    @Excel(name = "公司名称")
    private String companyName;

    /** 统一社会信用代码 */
    @Excel(name = "统一社会信用代码")
    private String creditCode;

    /** 法人姓名 */
    @Excel(name = "法人姓名")
    private String legalPerson;

    /** 接单状态 0-暂停接单 1-正在接单 */
    @Excel(name = "接单状态 0-暂停接单 1-正在接单")
    private Integer receivingOrder;

    /** 状态(0:禁用 1:启用) */
    @Excel(name = "状态(0:禁用 1:启用)")
    private Integer status;

    /** 评分(0-5分) */
    @Excel(name = "评分(0-5分)")
    private BigDecimal score;

    /** 总评分 */
    @Excel(name = "总评分")
    private BigDecimal totalScore;

    /** 评价次数 */
    @Excel(name = "评价次数")
    private Long scoreCount;

    /** 平均评分(0-5分) */
    @Excel(name = "平均评分(0-5分)")
    private BigDecimal avgScore;

    /** 五星好评率 */
    @Excel(name = "五星好评率")
    private BigDecimal fiveStarRate;

    /** 完成订单数 */
    @Excel(name = "完成订单数")
    private Long completeOrderCount;

    /** 工时 */
    @Excel(name = "工时")
    private BigDecimal workingHours;
    /** 区 */
    @Excel(name = "区")
    private String addressName;
    @Excel(name = "可预约时间")
    private Date appointmentTime;
    @Excel(name = "余额")
    private BigDecimal balance;
    @Excel(name = "工位数量")
    private Integer workstationsNumber;
    @Excel(name = "级别")
    private Integer level;
    @Excel(name = "时段价")
    private BigDecimal hourPrice;
    /** 可预约时间 */


    private BigDecimal distance;


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("userId", getUserId())
            .append("garageName", getGarageName())
            .append("avatar", getAvatar())
            .append("introduction", getIntroduction())
            .append("serviceTypeIds", getServiceTypeIds())
            .append("serviceAreas", getServiceAreas())
            .append("businessLicense", getBusinessLicense())
            .append("transportLicense", getTransportLicense())
            .append("shopPhotos", getShopPhotos())
            .append("contactMobile", getContactMobile())
            .append("emergencyMobile", getEmergencyMobile())
            .append("province", getProvince())
            .append("city", getCity())
            .append("district", getDistrict())
            .append("address", getAddress())
            .append("longitude", getLongitude())
            .append("latitude", getLatitude())
            .append("auditStatus", getAuditStatus())
            .append("auditRemark", getAuditRemark())
            .append("auditTime", getAuditTime())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("qualificationPhotos", getQualificationPhotos())
            .append("environmentPhotos", getEnvironmentPhotos())
            .append("businessLicenseStatus", getBusinessLicenseStatus())
            .append("businessLicenseRemark", getBusinessLicenseRemark())
            .append("companyName", getCompanyName())
            .append("creditCode", getCreditCode())
            .append("legalPerson", getLegalPerson())
            .append("receivingOrder", getReceivingOrder())
            .append("status", getStatus())
            .append("score", getScore())
            .append("totalScore", getTotalScore())
            .append("scoreCount", getScoreCount())
            .append("avgScore", getAvgScore())
            .append("fiveStarRate", getFiveStarRate())
            .append("completeOrderCount", getCompleteOrderCount())
            .append("workingHours", getWorkingHours())
                .append("workstationsNumber", getWorkstationsNumber())
                .append("level", getLevel())
            .toString();
    }
}
